Service provisioning means many different things to many different people. For example, it may refer to the “preparation beforehand” of IT systems materials or supplies required to carry out some defined activity. It goes further than the initial contingency of providing resources, to the onward management lifecycle of these resources as managed items. This could include the provisioning of purely digital services like user accounts and access privileges on systems, networks and applications. It could also include the provisioning of non-digital or physical resources like the requesting of office space, cell phones and credit cards.
CORBA is one example of an interface that may be used in provisioning systems. CORBA is the acronym for Common Object Request Broker Architecture, OMG's open, vendor-independent architecture and infrastructure that computer applications use to work together over networks. Using the standard protocol IIOP, a CORBA-based program from any vendor, on almost any computer, operating system, programming language, and network, can interoperate with a CORBA-based program from the same or another vendor, on almost any other computer, operating system, programming language, and network.
CORBA is useful in many situations. Because of the easy way that CORBA integrates machines from so many vendors, with sizes ranging from mainframes through minis and desktops to hand-helds and embedded systems, it is the middleware of choice for large (and even not-so-large) enterprises. One of its most important, as well most frequent, uses is in servers that must handle large number of clients, at high hit rates, with high reliability.
CORBA applications are composed of objects, individual units of running software that combine functionality and data, and that frequently (but not always) represent something in the real world. Typically, there are many instances of an object of a single type—for example, an e-commerce website would have many shopping cart object instances, all identical in functionality but differing in that each is assigned to a different customer, and contains data representing the merchandise that its particular customer has selected. For other types, there may be only one instance. When a legacy application, such as an accounting system, is wrapped in code with CORBA interfaces and opened up to clients on the network, there is usually only one instance.
For each object type, such as the shopping cart that we just mentioned, you define an interface in OMG IDL. The interface is the syntax part of the contract that the server object offers to the clients that invoke it. Any client that wants to invoke an operation on the object must use this IDL interface to specify the operation it wants to perform, and to marshal the arguments that it sends. When the invocation reaches the target object, the same interface definition is used there to unmarshal the arguments so that the object can perform the requested operation with them. The interface definition is then used to marshal the results for their trip back, and to unmarshal them when they reach their destination.
The IDL interface definition is independent of programming language, but maps to all of the popular programming languages via OMG standards: OMG has standardized mappings from IDL to C, C++, Java, COBOL, Smalltalk, Ada, Lisp, Python, and IDLscript.
This separation of interface from implementation, enabled by OMG IDL, is the essence of CORBA—how it enables interoperability, with all of the transparencies we've claimed. The interface to each object is defined very strictly. In contrast, the implementation of an object—its running code, and its data—is hidden from the rest of the system (that is, encapsulated) behind a boundary that the client may not cross. Clients access objects only through their advertised interface, invoking only those operations that that the object exposes through its IDL interface, with only those parameters (input and output) that are included in the invocation.
What is known as the Diameter protocol is an extension to the Remote Access Dial In User Services (RADIUS) protocol. It addresses additional capabilities inherent in roaming, Network Access Server AAA, Mobile IP Salability and extensibility. The RADIUS protocol has been widely and successfully deployed to provide authentication, authorization, and accounting (AAA) services for dial-up PPP/IP and Mobile IP access. However, inherent shortcomings of the RADIUS protocol have limited its ability to adapt to the ever-increasing capabilities of routers and network access servers (NAS), and the ever-expanding set of desired AAA services.
The Sh 3GPP reference point provides the definition of the interactions between the HSS (Home Subscriber Server) and the SIP AS (Application Server) and between the HSS and the OSA SCS (Service Capability Server). It is defined using extensibility of the Diameter protocol.
Sh is implemented as an application using the extensibility inherent in the Diameter protocol. Technically, Sh is defined using an IETF vendor specific Diameter application, where the vendor is 3GPP. The vendor identifier is assigned by IANA to 3GPP and the Diameter application identifier has been assigned to the Sh interface.
It is a drawback of prior art provisioning systems that service providers interface to each application individually. As a result separate paths must be set up between the provisioning center and each network element requiring subscriber specific data.